package day15.pack1;

import day15.Teacher;

import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) throws InterruptedException {
        // 强引用Teacher teacher = new Teacher(9527, "张老师");
//        Teacher teacher = new Teacher(9527, "张老师");
        // 创建了一个软引用对象，引用了teacher对象（假设teacher=0x1)
        WeakReference<Teacher> reference = new WeakReference<>(new Teacher(9527, "张老师"));
        if(2 > 1) {
            // 手动催促GC来收垃圾。注意： 程序无法控制GC具体的工作时间。
            System.gc(); // 通知GC(另外一个线程)来回收，BUT：具体啥时候，不确定。
            Thread.sleep(3000); // 主线程main等待3S在往下执行代码
        }
//        List<Teacher> list = new ArrayList<>();
//        try {
//            for (int i = 0; i < 100000; i++) {
//                list.add(new Teacher(i, "老师" + i));
//            }
//        } catch (Throwable e) {
//            e.printStackTrace();
//        }
        // ...1
        //...100
        System.out.println(Teacher.aaa.getName());

        Teacher.aaa = null;
        if(2 > 1) {
            // 手动催促GC来收垃圾。注意： 程序无法控制GC具体的工作时间。
            System.gc(); // 通知GC(另外一个线程)来回收，BUT：具体啥时候，不确定。
            Thread.sleep(3000); // 主线程main等待3S在往下执行代码
        }
        System.out.println("第二次");
        System.out.println(Teacher.aaa.getName());
    }
}

